59 research outputs found
Relational Parametricity for Computational Effects
According to Strachey, a polymorphic program is parametric if it applies a
uniform algorithm independently of the type instantiations at which it is
applied. The notion of relational parametricity, introduced by Reynolds, is one
possible mathematical formulation of this idea. Relational parametricity
provides a powerful tool for establishing data abstraction properties, proving
equivalences of datatypes, and establishing equalities of programs. Such
properties have been well studied in a pure functional setting. Many programs,
however, exhibit computational effects, and are not accounted for by the
standard theory of relational parametricity. In this paper, we develop a
foundational framework for extending the notion of relational parametricity to
programming languages with effects.Comment: 31 pages, appears in Logical Methods in Computer Scienc
The Clocks They Are Adjunctions: Denotational Semantics for Clocked Type Theory
Clocked Type Theory (CloTT) is a type theory for guarded recursion useful for
programming with coinductive types, allowing productivity to be encoded in
types, and for reasoning about advanced programming language features using an
abstract form of step-indexing. CloTT has previously been shown to enjoy a
number of syntactic properties including strong normalisation, canonicity and
decidability of type checking. In this paper we present a denotational
semantics for CloTT useful, e.g., for studying future extensions of CloTT with
constructions such as path types.
The main challenge for constructing this model is to model the notion of
ticks used in CloTT for coinductive reasoning about coinductive types. We build
on a category previously used to model guarded recursion, but in this category
there is no object of ticks, so tick-assumptions in a context can not be
modelled using standard tools. Instead we show how ticks can be modelled using
adjoint functors, and how to model the tick constant using a semantic
substitution
Denotational semantics for guarded dependent type theory
We present a new model of Guarded Dependent Type Theory (GDTT), a type theory
with guarded recursion and multiple clocks in which one can program with, and
reason about coinductive types. Productivity of recursively defined coinductive
programs and proofs is encoded in types using guarded recursion, and can
therefore be checked modularly, unlike the syntactic checks implemented in
modern proof assistants.
The model is based on a category of covariant presheaves over a category of
time objects, and quantification over clocks is modelled using a presheaf of
clocks. To model the clock irrelevance axiom, crucial for programming with
coinductive types, types must be interpreted as presheaves orthogonal to the
object of clocks. In the case of dependent types, this translates to a lifting
condition similar to the one found in homotopy theoretic models of type theory,
but here with an additional requirement of uniqueness of lifts. Since the
universes defined by the standard Hofmann-Streicher construction in this model
do not satisfy this property, the universes in GDTT must be indexed by contexts
of clock variables. We show how to model these universes in such a way that
inclusions of clock contexts give rise to inclusions of universes commuting
with type operations on the nose.Comment: This is the third version of the paper representing a minor revision
over the second version. The paper has 40 page
What monads can and cannot do with a bit of extra time
The delay monad provides a way to introduce general recursion in type theory.
To write programs that use a wide range of computational effects directly in
type theory, we need to combine the delay monad with the monads of these
effects. Here we present a first systematic study of such combinations.
We study both the coinductive delay monad and its guarded recursive cousin,
giving concrete examples of combining these with well-known computational
effects. We also provide general theorems stating which algebraic effects
distribute over the delay monad, and which do not. Lastly, we salvage some of
the impossible cases by considering distributive laws up to weak bisimilarity.Comment: To be published in Proceedings of CSL 202
First steps in synthetic guarded domain theory: step-indexing in the topos of trees
We present the topos S of trees as a model of guarded recursion. We study the
internal dependently-typed higher-order logic of S and show that S models two
modal operators, on predicates and types, which serve as guards in recursive
definitions of terms, predicates, and types. In particular, we show how to
solve recursive type equations involving dependent types. We propose that the
internal logic of S provides the right setting for the synthetic construction
of abstract versions of step-indexed models of programming languages and
program logics. As an example, we show how to construct a model of a
programming language with higher-order store and recursive types entirely
inside the internal logic of S. Moreover, we give an axiomatic categorical
treatment of models of synthetic guarded domain theory and prove that, for any
complete Heyting algebra A with a well-founded basis, the topos of sheaves over
A forms a model of synthetic guarded domain theory, generalizing the results
for S
Ticking clocks as dependent right adjoints: Denotational semantics for clocked type theory
Clocked Type Theory (CloTT) is a type theory for guarded recursion useful for
programming with coinductive types, allowing productivity to be encoded in
types, and for reasoning about advanced programming language features using an
abstract form of step-indexing. CloTT has previously been shown to enjoy a
number of syntactic properties including strong normalisation, canonicity and
decidability of the equational theory. In this paper we present a denotational
semantics for CloTT useful, e.g., for studying future extensions of CloTT with
constructions such as path types.
The main challenge for constructing this model is to model the notion of
ticks on a clock used in CloTT for coinductive reasoning about coinductive
types. We build on a category previously used to model guarded recursion with
multiple clocks. In this category there is an object of clocks but no object of
ticks, and so tick-assumptions in a context can not be modelled using standard
tools. Instead we model ticks using dependent right adjoint functors, a
generalisation of the category theoretic notion of adjunction to the setting of
categories with families. Dependent right adjoints are known to model
Fitch-style modal types, but in the case of CloTT, the modal operators
constitute a family indexed internally in the type theory by clocks. We model
this family using a dependent right adjoint on the slice category over the
object of clocks. Finally we show how to model the tick constant of CloTT using
a semantic substitution.
This work improves on a previous model by the first two named authors which
not only had a flaw but was also considerably more complicated.Comment: 31 pages. Second version is a minor revision. arXiv admin note: text
overlap with arXiv:1804.0668
Greatest HITs: Higher Inductive Types in Coinductive Definitions via Induction under Clocks
Guarded recursion is a powerful modal approach to recursion that can be seen
as an abstract form of step-indexing. It is currently used extensively in
separation logic to model programming languages with advanced features by
solving domain equations also with negative occurrences. In its multi-clocked
version, guarded recursion can also be used to program with and reason about
coinductive types, encoding the productivity condition required for recursive
definitions in types. This paper presents the first type theory combining
multi-clocked guarded recursion with the features of Cubical Type Theory, as
well as a denotational semantics. Using the combination of Higher Inductive
Types (HITs) and guarded recursion allows for simple programming and reasoning
about coinductive types that are traditionally hard to represent in type
theory, such as the type of finitely branching labelled transition systems. For
example, our results imply that bisimilarity for these imply path equality, and
so proofs can be transported along bisimilarity proofs. Among our technical
contributions is a new principle of induction under clocks. This allows
universal quantification over clocks to commute with HITs up to equivalence of
types, and is crucial for the encoding of coinductive types. Such commutativity
requirements have been formulated for inductive types as axioms in previous
type theories with multi-clocked guarded recursion, but our present formulation
as an induction principle allows for the formulation of general computation
rules.Comment: 29 page
Diamonds are not forever: Liveness in reactive programming with guarded recursion
When designing languages for functional reactive programming (FRP) the main
challenge is to provide the user with a simple, flexible interface for writing
programs on a high level of abstraction while ensuring that all programs can be
implemented efficiently in a low-level language. To meet this challenge, a new
family of modal FRP languages has been proposed, in which variants of Nakano's
guarded fixed point operator are used for writing recursive programs
guaranteeing properties such as causality and productivity. As an apparent
extension to this it has also been suggested to use Linear Temporal Logic (LTL)
as a language for reactive programming through the Curry-Howard isomorphism,
allowing properties such as termination, liveness and fairness to be encoded in
types. However, these two ideas are in conflict with each other, since the
fixed point operator introduces non-termination into the inductive types that
are supposed to provide termination guarantees.
In this paper we show that by regarding the modal time step operator of LTL a
submodality of the one used for guarded recursion (rather than equating them),
one can obtain a modal type system capable of expressing liveness properties
while retaining the power of the guarded fixed point operator. We introduce the
language Lively RaTT, a modal FRP language with a guarded fixed point operator
and an `until' type constructor as in LTL, and show how to program with events
and fair streams. Using a step-indexed Kripke logical relation we prove
operational properties of Lively RaTT including productivity and causality as
well as the termination and liveness properties expected of types from LTL.
Finally, we prove that the type system of Lively RaTT guarantees the absence of
implicit space leaks
- …